#ifndef ROOM_HH
#define ROOM_HH

#include <string>
#include <vector>

enum class RoomType { START, ENEMY, REWARD, BOSS };

class Room {
public:
    Room();                                             // Default constructor
    Room(int id, RoomType type);                        // Constructor with ID and type
    Room(Room&& other) noexcept;                        // Move constructor
    Room& operator=(Room&& other) noexcept;             // Move assignment

    Room(const Room&) = delete;                         // Disable copy constructor
    Room& operator=(const Room&) = delete;              // Disable copy assignment

    virtual ~Room() = default;                          // Virtual destructor

    std::string getTypeName() const;                    // Get string name of room type

    int id;                                             // Room ID
    RoomType type;                                      // Room type
    bool visited;                                       // Whether the room has been visited
    std::vector<int> neighbors;                         // Connected room IDs
};

#endif // ROOM_HH